Le dataset étant assez conséquent, nous avons procédé par étape. Tout d’abord, quelques lignes n’ont pas été importées d’une manière utilisable. Nous les avons donc converti dans une unité qui nous convenait. Pour les dates, nous avons utilisé le format Date, qui nécessite un jour. On a donc placé toutes les dates au premier jour du mois.

data$`YEAR-MONTH` <- as.Date(paste(data$`YEAR-MONTH`,"-01",sep=""))
data$`MEAN SEA LEVEL PRESSURE HEIGHT FLAG` <- as.character(data$`MEAN SEA LEVEL PRESSURE HEIGHT FLAG`)
data$`MAXIMUM TEMPERATURE (deg C)` <- (data$`MAXIMUM TEMPERATURE (deg C)`)/10
data$`MINIMUM TEMPERATURE (deg C)` <- (data$`MINIMUM TEMPERATURE (deg C)`)/10
data$`MEAN TEMPERATURE (deg C)` <- (data$`MEAN TEMPERATURE (deg C)`)/10

Ensuite, on a isolé la première station avec son ID (01001) pour voir son évolution pendant toutes les années qui ont été registrées.

firstStation <- data %>% filter(`WMO ID` == '01001')

plot <- firstStation %>%
  filter(`MEAN TEMPERATURE (deg C)` < 800, `MEAN TEMPERATURE (deg C)` > -800) %>%
  ggplot(aes(x = firstStation$`YEAR-MONTH`, y = firstStation$`MEAN TEMPERATURE (deg C)`)) + 
  geom_line() + 
  labs(title = "Evolution de la température pour notre première station", x = "Date", y = "Température moyenne")
ggplotly(plot)

Une première représentation avec un geom_line() nous rappelle que les saisons existent. Il nous faut donc une représentation plus stable sur l’année.

plot <- firstStation %>% 
  filter(`MEAN TEMPERATURE (deg C)` < 800, `MEAN TEMPERATURE (deg C)` > -800) %>%
  ggplot(aes(x = firstStation$`YEAR-MONTH`, y = firstStation$`MEAN TEMPERATURE (deg C)`)) + 
  geom_smooth(method = 'loess', formula = 'y ~ x') +
  labs(title = "Evolution de la température pour notre première station", x = "Date", y = "Température moyenne")
ggplotly(plot)

Après vérification, cette première station est assez isolée.

worldMap <- getMap()
world.points <- fortify(worldMap)
## Regions defined for each Polygons
world.points$region <- world.points$id

world.df <- world.points[,c("long","lat","group", "region")]

ggplot() + 
  geom_polygon(data = world.df, aes(x = long, y = lat, group = group)) +
  scale_y_continuous(breaks = (-2:2) * 30) +
  scale_x_continuous(breaks = (-4:4) * 45) +
  coord_map("ortho", orientation=c(50, -20, 0)) +
  geom_point(aes(x = -8.67, y = 70.9), color='red')

Les conditions y sont un peu extrêmes, donc on va chercher des stations plus proches de chez nous. Cela nous permettra en plus de s’assurer que notre dataset a des bonnes infos. A vue de nez, on va situer la France dans une longitude entre -2 et 7, et dans une latitude entre 42 et 50. On va ensuite les grouper par ID pour avoir une seule donnée par station.

franceStations <- data %>% 
  filter(`LONGITUDE (deg)` > -2, `LONGITUDE (deg)` < 7, `LATITUDE (deg)` > 42, `LATITUDE (deg)` < 51)

franceStationsPos <- franceStations %>% distinct(`WMO ID`, .keep_all = TRUE)
worldmap <- ne_countries(scale = 'medium', type = 'map_units',
                         returnclass = 'sf')
france <- worldmap[worldmap$name == 'France',]

plot <- ggplot() + geom_sf(data = france) + theme_bw() + geom_point(data = franceStationsPos , aes(x = `LONGITUDE (deg)`, y = `LATITUDE (deg)`), color = "blue")
ggplotly(plot)

On aimerait avoir la moyenne de température sur toutes ces stations. On va donc grouper nos relevés par mois, en gardant la moyenne de toutes les stations sur ce mois-ci.

plot <- franceStations %>%
  filter(`MEAN TEMPERATURE (deg C)` > -800, `MEAN TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  group_by(`YEAR-MONTH`) %>%
  summarize(Temp = mean(`MEAN TEMPERATURE (deg C)`)) %>%
    ggplot(aes(x = `YEAR-MONTH`, y = Temp)) + 
    geom_smooth(method = 'loess', formula = 'y ~ x') +
    labs(title = "Evolution de la température moyenne en France", x = "Date", y = "Température moyenne")
ggplotly(plot)

On retrouve donc une évolution bien moins extrême, mais qui est toujours là (surtout dans les dernières années).

On aimerait retrouver les périodes de grande chaleur dans les dernières années. La température maximale enregistrée convient parfaitement à notre besoin.

plot <- franceStations %>%
  filter(`MAXIMUM TEMPERATURE (deg C)` > -800, `MAXIMUM TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  group_by(`YEAR-MONTH`) %>%
  summarize(Temp = mean(`MAXIMUM TEMPERATURE (deg C)`)) %>%
    ggplot(aes(x = `YEAR-MONTH`, y = Temp)) + 
    geom_line() +
    labs(title = "Evolution de la température maximale en France", x = "Date", y = "Température maximale moyenne")
ggplotly(plot)

On peut ici bien démarquer deux années vers 2005 : ce sont les canicules de 2003 et 2006, la première faisant 15.000 morts. Est-ce qu’on pourrait isoler d’autres évènements importants des dernières années ?

australiaTemp <- data %>%
  filter(`LONGITUDE (deg)` > 113, `LONGITUDE (deg)` < 153, `LATITUDE (deg)` > -35, `LATITUDE (deg)` < -14) %>%
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2020-01-01"))) %>%
  filter(`MEAN TEMPERATURE (deg C)` > -800, `MEAN TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  group_by(`YEAR-MONTH`) %>%
  summarize(temp = mean(`MEAN TEMPERATURE (deg C)`))

franceTemp <- franceStations %>%
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2020-01-01"))) %>%
  filter(`MEAN TEMPERATURE (deg C)` > -800, `MEAN TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  group_by(`YEAR-MONTH`) %>%
  summarize(temp = mean(`MEAN TEMPERATURE (deg C)`))

plot <- data %>%
  filter(`MEAN TEMPERATURE (deg C)` > -800, `MEAN TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2020-01-01"))) %>%
  arrange(`YEAR-MONTH`) %>%
  group_by(`YEAR-MONTH`) %>%
  summarize(globalTemp = mean(`MEAN TEMPERATURE (deg C)`)) %>%
    ggplot(aes(x = `YEAR-MONTH`)) + 
    geom_smooth(aes(y = globalTemp, color = "World"), method = 'loess', formula = 'y ~ x', se=F, show.legend = TRUE) +
    geom_smooth(aes(y = franceTemp$temp, color = "France"), method = 'loess', formula = 'y ~ x', se=F, show.legend = TRUE) +
    geom_smooth(aes(y = australiaTemp$temp, color = "Australia"), method = 'loess', formula = 'y ~ x', se=F, show.legend = TRUE) +
    ylim(0, 30) + 
    labs(title = "Evolution de la température moyenne dans le monde, en France, en Australie", x = "Date", y = "Température moyenne", colour = "Données")
ggplotly(plot)

Ce graphique illustre très bien la différence des saisons entre l’hémisphère Nord et Sud. On remarque de plus que la moyenne sur le monde entier correspond plus à un pays de l’hémisphère Nord qu’une moyenne entre les deux … peut-être à cause de la répartition des stations ?

southStations <- data %>%
  filter(`LATITUDE (deg)` < 0)
northStations <- data %>%
  filter(`LATITUDE (deg)` > 0)
c("South", count(southStations), "North", count(northStations))
## [[1]]
## [1] "South"
## 
## $n
## [1] 202033
## 
## [[3]]
## [1] "North"
## 
## $n
## [1] 631156

Et il y a bien 3 fois plus de relevés dans le nord que dans le sud. Dorénavant, nous allons donc séparer les relevés entre les deux hémisphères. Le cas de l’Australie est très intéressant. Est-ce que les feux de l’année dernière peuvent s’expliquer par la météo ?

australiaTemp <- data %>%
  filter(`LONGITUDE (deg)` > 113, `LONGITUDE (deg)` < 153, `LATITUDE (deg)` > -35, `LATITUDE (deg)` < -14) %>%
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2010-01-01"))) %>%
  filter(`MAXIMUM TEMPERATURE (deg C)` > -800, `MAXIMUM TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  filter(`TOTAL PRECIPITATION (mm)` > -800, `TOTAL PRECIPITATION (mm)` < 2000) %>%
  group_by(`YEAR-MONTH`) %>%
  summarize(temp = mean(`MAXIMUM TEMPERATURE (deg C)`), rain = mean(`TOTAL PRECIPITATION (mm)`))

coeff <- 10

plot <- australiaTemp %>%
  ggplot(aes(x = `YEAR-MONTH`)) + 
  geom_line(aes(y = temp, colour = "Temp")) +
  geom_line(aes(y = rain/coeff + 20, colour = "Rain")) +
  labs( colour = "Données" )
ggplotly(plot)

L’échelle de la pluie est complètement cassée, nous avons du l’adapter pour qu’elle soit facilement comparable à la température. La corrélation vient des saisons (janvier étant le milieu d’été en Australie). Si vous vous en souvenez, les feux en Australie ont commencé à être vraiment diffusés mondialement courant Mars 2020. Cependant, il s’avère que les feux duraient alors depuis bien longtemps, et ont commencé vers Août 2019, période que l’on peut remarquer comme étant très sèche et avec une température très élevée par rapport au reste de la décennie. La plupart des feux de cette période s’avèrent avoir été commencés par de la foudre, dont la fréquence augmente en cas de sécheresse et haute température. En poussant un peu plus les recherches, on a appris que la sécheresse - et les feux - ont été principalement sur la côté Est. Est-ce qu’on peut noter la différence par les graphes ?

australiaWestTemp <- data %>%
  filter(`LONGITUDE (deg)` > 140, `LONGITUDE (deg)` < 153, `LATITUDE (deg)` > -35, `LATITUDE (deg)` < -14) %>%
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2019-01-01"))) %>%
  filter(`MAXIMUM TEMPERATURE (deg C)` > -800, `MAXIMUM TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  filter(`TOTAL PRECIPITATION (mm)` > -800, `TOTAL PRECIPITATION (mm)` < 2000) %>%
  group_by(`YEAR-MONTH`) %>%
  summarize(temp = mean(`MAXIMUM TEMPERATURE (deg C)`), rain = mean(`TOTAL PRECIPITATION (mm)`))

australiaEstTemp <- data %>%
  filter(`LONGITUDE (deg)` > 113, `LONGITUDE (deg)` < 140, `LATITUDE (deg)` > -35, `LATITUDE (deg)` < -14) %>%
  filter(`YEAR-MONTH` <= as.Date(as.character("2020-12-01")), `YEAR-MONTH` >= as.Date(as.character("2019-01-01"))) %>%
  filter(`MAXIMUM TEMPERATURE (deg C)` > -800, `MAXIMUM TEMPERATURE (deg C)` < 800) %>% # On enlève les relevés sans températures
  filter(`TOTAL PRECIPITATION (mm)` > -800, `TOTAL PRECIPITATION (mm)` < 2000) %>%
  group_by(`YEAR-MONTH`) %>%
  summarize(temp = mean(`MAXIMUM TEMPERATURE (deg C)`), rain = mean(`TOTAL PRECIPITATION (mm)`))

coeff <- 10

plot <- australiaWestTemp %>%
  ggplot(aes(x = `YEAR-MONTH`)) + 
  geom_line(aes(y = temp, colour = "West")) +
  geom_line(aes(y = australiaEstTemp$temp, colour = "East")) +
  labs( colour = "Données" )
ggplotly(plot)

En terme de température, on peut en effet noter une légère différence.

plot <- australiaWestTemp %>%
  ggplot(aes(x = `YEAR-MONTH`)) + 
  geom_line(aes(y = rain, colour = "West")) +
  geom_line(aes(y = australiaEstTemp$rain, colour = "East")) +
  labs( colour = "Données" )
ggplotly(plot)

Mais c’est en terme de précipitations que la différence s’est fait ressentir. Une pluie faible tout au long de la période, et une saison des pluies très insuffisante.